package com.fast.model;

import com.alibaba.fastjson.JSONObject;
import lombok.Data;
import lombok.ToString;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.util.List;

/**
 * api-新增媒资
 *
 * @author liuliang
 * @date 2018/4/19
 */
@Data
@Accessors(chain = true)
@ToString
public class AddMediaRequest implements Serializable {

    private static final long serialVersionUID = -2936553834892349262L;

    /**
     * 标题
     */
//    //@NotBlank(message = "标题不能为空")
    private String title;

    /**
     * 资源url
     */
    ////@NotBlank(message = "资源url不能为空")
    private String url;

    /**
     * 发生时间(时间戳，精确到毫秒)
     */
    private Long occurTimestamp;

    /**
     * 说明
     */
    private String content;

    /**
     * 文件夹id
     */
    private String folderId;

    /**
     * 第三方业务id
     * 会做业务去重，根据租户id和outId
     */
    private String outId;

    /**
     * 缩略图
     */
    private String thumbImageUrl;

    /**
     * 资源来源(包括离线数据、实时视频数据等)
     */
    private String resourceType;

    /**
     * 数据来源
     */
    //@NotBlank(message = "数据来源不能为空")
    private String dataSource;

    /**
     * 媒资类型
     */
    private String mediaType;

    /**
     * 媒资业务数据类型(如有)
     */
    private String mediaBizType;

    /**
     * 发布源网页地址(如有)
     */
    private String pageUrl;

    /**
     * 报道的机构(如有)
     */
    private String reportOrganization;

    /**
     * 报道的作者(如有)
     */
    private String reportAuthor;

    /**
     * 用户业务数据，比如交易相关
     */
    private JSONObject userDataJson;

//    /**
//     * 水印配置
//     */
//    private MediaWaterMarkConfig waterMarkConfig;

//    /**
//     * 媒资附件列表
//     */
//    private List<MediaAttachmentModel> attachmentList;

    /**
     * 版权期限
     */
    private Long copyRight;

    /**
     * 是否为批量操作
     */
    private Boolean isMulti;


    /**
     * 稿件纯文本数据
     */
    private String plainBody;

    /**
     * 媒资附件（图片）ids
     */
    private List<String> mediaIds;

    /**
     * 任务控制协议
     */
    private JobConfig jobConfig;


    public JobConfig jobConfig() {
        this.jobConfig = new JobConfig();
        return this.jobConfig;
    }

    @Data
    @ToString
    public class JobConfig implements Serializable {


        private static final long serialVersionUID = -4009986076609848611L;

        /**
         * 任务优先级
         * {@link com.shuwen.mediax.media.manage.api.client.constants}
         */
        private Integer priority;


        /**
         * 转码策略
         * {@link com.shuwen.mediax.media.manage.api.client.constants}
         */
        private String transcodeStrategy;

    }

    public Boolean getIsMulti() {
        return isMulti;
    }

    public void setIsMulti(Boolean multi) {
        isMulti = multi;
    }
}
